

/******************** 定义类 ***************************************************************/
/*
    管理员类
 */
function Member() {
    this.id = null; // 唯一标识
    this.number = "";//
    this.username = ""; // 名称
    this.permission = {}; // 权限
    this.is_super = false; // 是超级管理员
    this.status = 0; // 状态
    this.landing_status = false; // 登陆状态
    this.role_type = ""; // 角色类型：企业，服务机构，个人
    this.create_time = ""; // 创建时间
    this.formated_create_time = ""; // 格式化的创建时间
    this.name = ""; // 联系人姓名
    this.mobile_phone = ""; // 手机号
    this.department = ""; // 部门
    this.email = ""; // 邮箱
    this.enterprise_profile = ""; // 企业简介
    this.usci = ""; // 统一社会信用代码
    this.registered_capital = 0; // 注册资本
    this.business_licence = ""; // 营业执照注册号
    this.business_licence_pic = { dataUrl: "" }; // 营业执照照片
    this.area = []; // 区域
    this.logo = { dataUrl: "" }; // logo
    this.enterprise_name = ""; // 企业名称
    this.address = ""; // 详细地址
    this.coordinate = []; // 坐标
    this.is_mobile_phone_authed = false; // 手机是否认证
    this.is_email_authed = false; // 邮箱是否认证
    this.enterprise_authed_status = 0; // 企业机构认证状态
    this.old_data = {};
    this.identity_card = ""; //身份证号
    this.is_identity_card_authed = false; //身份证是否被认证
    this.identity_card_front = ""; //身份证正面照片
    this.identity_card_verso = ""; //身份证反面照片
    this.enterprise_type = "";// 企业或服务机构类型
    this.unread_message_count = 0;
    this.read_message_count= 0;
    this.recycle_message_count= 0;
    this.s_provider_count= 0;
    this.r_demander_count= 0;
    this.s_demander_count= 0;
    this.r_provider_count= 0;
    this.chatting_count= 0;
    this.comming_count= 0;
    this.posted_count= 0;
    this.rate = null; //平均分
}

// 将对象序列化为一个json对象，可以用于http请求或对象复制
Member.prototype.serialize = function() {
    return Object.assign({}, this, {
        area: this.area.join(","), // 区域
        coordinate: this.coordinate.join(","),
        logo: this.logo.dataUrl, // logo
        business_licence_pic: this.business_licence_pic.dataUrl, // 营业执照照片
        permission: permissionObject2Str(this.permission),
    });
}

// 用json数据为对象属性赋值
Member.prototype.parse = function(data) {
    if(!data) return;
    Object.assign(this, data, {
        permission: data.permission ? permissionStr2Object(data.permission) : {},
        is_super: data.permission ? data.permission.match(/\+100010/) : false,
        business_licence_pic: { dataUrl: data.business_licence_pic }, // 营业执照照片
        area: data.area ? data.area.split(",") : [], // 区域
        coordinate: data.coordinate ? data.coordinate.split(",") : [],
        logo: { dataUrl: data.logo }, // logo
        formated_create_time: new Date(parseInt(data.create_time)).toLocaleDateString()+" "+new Date(parseInt(data.create_time)).getHours()+":"+new Date(parseInt(data.create_time)).getMinutes(),
    });
}

// 暂时将属性存起来，做一次备份
Member.prototype.storageValue = function() {
    this.storage = this.serialize();
}

// 用备份的数据覆盖现有数据
Member.prototype.applyStorageValue = function() {
    if(this.storage) {
        this.parse(this.storage);
    }
}
Member.prototype.copy = function(target) {
    this.parse(this.serialize(target));
}

function permissionStr2Object(str) {
    var result = {};
    var arr;
    arr = str.match(/\+\d+/g);
    if(arr) {
        for(var i = 0, len = arr.length; i < len; i++) {
            if(arr[i].length >= 5) {
                result[arr[i].substring(1)] = true;
            }
        }
    }
    arr = str.match(/\-\d+/g);
    if(arr) {
        for(var i = 0, len = arr.length; i < len; i++) {
            if(arr[i].length >= 5) {
                result[arr[i].substring(1)] = false;
            }
        }
    }
    return result;
}
function permissionObject2Str(obj) {
    var str = "";
    for(var key in obj) {
        str += (obj[key] ? "+" : "-") + key;
    }
    return str;
}

// ******************** 类静态属性与方法 **********************************************
// 解析json数据，返回一个对象
Member.parse = function(data) {
    var o = new Member();
    o.parse(data);
    return o;
}

// 解析json数组，返回对象数组
Member.parseList = function(list) {
    var len = list.length;
    var arr = new Array(len);
    for(var i = 0; i < len; i++) {
        arr[i] = Member.parse(list[i]);
    }
    return arr;
}

Member.copy = function(target) {
    var o = new Member();
    o.copy(target);
    return o;
}
// ******************** 数据库存储方法 **********************************************
// Member.prototype.save = function(callback) {
//     var that = this;
//     var action = this.mode == "add" ? "article_add" : "article_modify";
//     api.post(action, this.serialize(), function(res) {
//         that.id = res.id;
//         if(callback) callback();
//     });
// }



// ******************** 导出 **********************************************
export default Member